<?php

/**
 * Facade_UserAccess
 * Fachada de los accesos de los usuarios
 * @copyright 2011
 * @version $Id$
 * @access public
 */
class Default_Model_Facade_Useraccess{
	
	/**
	 * Facade_UserAccess::Facade_UserAccess()
	 * Constructor de la fachada
	 * @return void
	 */
	public function Default_Model_Facade_Useraccess()
	{
		
	}
		
	/**
	 * Facade_UserAccess::CreateUserAccess()
	 * Crear un acceso
	 * @param mixed $userAccess : objeto con los datos del acceso a crear
	 * @return : regresa objeto con los datos del acceso creado.
	 */
	public function createUserAccess($userAccess)
	{    					
		$TBD_UserAccess = new Default_Model_Useraccess();
				
		try{				
			  $data =  $TBD_UserAccess->createUserAccess($userAccess);
			  return $data;		
		}
		catch(Exception $e)
		{
			$error=array($e->getFile(), 'Exception: '.$e->getMessage());
                    $ExceptionHandler= new Default_Model_ExceptionHandler();
                    $ExceptionHandler->saveErrors($error);
		}
	}
	
	
	
	public function getPersonalInfo($to)
	{
		$TBD_UserAccess = new Default_Model_Useraccess();
	
		try{
			$data =  $TBD_UserAccess->getPersonalInfo($to);
			return $data;
		}
		catch(Exception $e)
		{
			$error=array($e->getFile(), 'Exception: '.$e->getMessage());
			$ExceptionHandler= new Default_Model_ExceptionHandler();
			$ExceptionHandler->saveErrors($error);
		}
	}
	
	/**
	 * Facade_UserAccess::ReadUserAccess()
	 * Lectura del acceso
	 * @param mixed $userAccess : objeto con los datos del acceso
	 * @return : regresa objeto con los datos del acceso buscado
	 */
	public function readUserAccess($userAccess)
	{		
		$TBD_UserAccess = new Default_Model_Useraccess();
		
		try{
			$data = $TBD_UserAccess->readUserAccess($userAccess);			
			return $data;
		}
		catch(Exception $e)
		{
			$error=array($e->getFile(), 'Exception: '.$e->getMessage());
                    $ExceptionHandler= new Default_Model_ExceptionHandler();
                    $ExceptionHandler->saveErrors($error);
		}
		
	}
	/**
	 * Facade_UserAccess::isAllow()
	 * 
	 * @param mixed $userAccess
	 * @return
	 */
	public function isAllow($userAccess)
	{		
		$TBD_UserAccess = new Default_Model_Useraccess();
		
		try{
			$data = $TBD_UserAccess->isAllow($userAccess);			
			return $data;
		}
		catch(Exception $e)
		{
			$error=array($e->getFile(), 'Exception: '.$e->getMessage());
                    $ExceptionHandler= new Default_Model_ExceptionHandler();
                    $ExceptionHandler->saveErrors($error);
		}
		
	}
	/**
	 * Facade_UserAccess::readUserAccessByUser()
	 * Lee los accesos de usuario para un usuario dado.
	 * @param mixed $userAccess Objeto con los accesos de usuario a leer.
	 * @return objeto con los accesos de usuario para un usuario.
	 */
	public function readUserAccessByUser($userAccess)
	{		
		$TBD_UserAccess = new Default_Model_Useraccess();
		
		try{
			$data = $TBD_UserAccess->readUserAccessByUser($userAccess);			
			return $data;
		}
		catch(Exception $e)
		{
		$error=array($e->getFile(), 'Exception: '.$e->getMessage());
                    $ExceptionHandler= new Default_Model_ExceptionHandler();
                    $ExceptionHandler->saveErrors($error);
		}
		
	}
	
	
	/**
	 * Facade_UserAccess::findUserAccess()
	 * Encuentra los accesos de usuarios activos para una usuario.
	 * @param mixed $userAccesses accesos de usuario para un usuario.
	 * @param mixed $modules modulos disponibles en la base de datos.
	 * @return regresa los permisos asignados a un usuario.
	 */
	public function findUserAccess($userAccesses,$modules){
		$index = 0;			
			
		foreach($modules as $module){			
			$moduleTemp[$index] = $module;
			
			foreach($userAccesses as $userAccess){		
										
				if($userAccess["Module_Id"]==$module["Id"]){					
					$moduleTemp[$index]["Selected"]="true";
					break;
				}else{
					$moduleTemp[$index]["Selected"]="false";
				}				
			}
			
			$index++;				
		}				
		
		return $moduleTemp;
	}
	
	/**
	 * Facade_UserAccess::deleteAllUserAccess()
	 * Elimina todos los accesos de usuario para un usuario.
	 * @param mixed $userAccess objeto con los accesos de usuario a eliminar.
	 * @return regresa los accesos de usuario eliminados.
	 */
	public function deleteAllUserAccess ($userAccess)
	{
		$TBD_UserAccess = new Saas_Model_UserAccess();
				
		try{				
					
			  $data =  $TBD_UserAccess->deleteAllUserAccess($userAccess);
				
			  return $data;		
		}
		catch(Exception $e)
		{
		$error=array($e->getFile(), 'Exception: '.$e->getMessage());
                    $ExceptionHandler= new Default_Model_ExceptionHandler();
                    $ExceptionHandler->saveErrors($error);
		}
	}
			
}
